在前幾天的學習中,已經建立了一個基本的文章管理應用程式,使用 Go、SQLite 和 HTML。今天,將進一步探索如何使用 Gin 框架來提升 Web 應用程式開發體驗。
Gin 是一個輕量且高效的 Go Web 框架,它提供了快速的路由(routing)、中間件(middleware)和其他一些有用的功能。Gin 的設計目標是簡單易用,並在性能方面表現優越。
安裝的步驟非常簡單,只要到 Gin 官網上面就已經有安裝的步驟了,看完之後,我們要先到終端機輸入這段指令:
$ go get -u github.com/gin-gonic/gin
輸入完之後,你可以到 go.mod 這個檔案中查看,這個檔案主要是你在這個專案中安裝的套件。接著,你可以看到一堆跟 Gin 相關的套件在裡面,基本上這樣就安裝結束了。
安裝完 Gin 之後,我們需要將 Gin import 到我們需要的檔案中:
package main
import (
"import "github.com/gin-gonic/gin"
)
接著,照著官網上在主程式中撰寫以下程式:
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "Welcom to your frist GIN Web!!!",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
距離成功開起網站只差最後一步了,我們只需執行 go build,並開啟專案,在瀏覽器上輸入 http://127.0.0.1:8080/
,此時你可以看到這樣的內容:
如果你看到這個畫面,代表你已經成功使用 Gin 製作了一個傳送資料到前端的後端程式了。
你會好奇,為什麼他呈現的方式不是我們平常看到的網頁的樣子,這是因為剛剛寫的程式中是以 JSON 的方式將資料傳給前端,接著,再由去對這個資料去做處理,簡單來說,這是一個典型的前後端分離的例子,通常在一個專案中也很常用這樣的模式再開發網頁應用,未來有機會再跟大家細講 JSON 跟前後端分離,現在我們就先專注在如何開啟你的第一支使用 Gin 的 Web 應用。
接下來,我們要使用 Gin 來做一個簡單的貼文功能,並且會使用一個 GORM 的套件來協助我們操作資料庫內的東西,那就先介紹一下 GORM 是什麼東西吧!!
當提到 Gin 就不得不提到 GORM 了,GORM 是一個用於 Go 語言的物件關聯映射(ORM)庫,它的目標是簡化並提高對資料庫的操作。ORM 是一種編程技術,它將應用程序中的對象模型與資料庫模型映射在一起,從而允許你使用面向對象的語言(如 Go)來操作資料庫,而不需要直接使用 SQL 語句,使我們可以更容易操作資料庫。
老樣子,可以到 GORM 的官網上查看如何使用它。
當進到官網,並點進 Docs,這邊幾乎可以找到你想要的資料,稍微往下一點,可以看到它已經告訴你要如何安裝 GORM 跟資料庫了,那我們就照它做一次看看吧!
先到終端機輸入:
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
這樣就會在你的專案上安裝 GORM 及 SQLite 了。
使用的方式也很簡單,如下:
package main
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
type Post struct {
gorm.Model
Title string
Content string
}
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
db.AutoMigrate(&Post{})
db.Create(&Post{Title: "學習使用 GORM", Content: "先安裝 GORM"})
}
當你執行 go run main.go
後,你會發現VS Code 左邊的工作區出現了一個名為 test.db 的檔案,是因為程式一開始,就先使用 SQLite 建立了一個名為 test.db 的檔案;隨後,使用 GORM 的 AutoMigrate 方法來自動建立一開始定義好的 Post 結構體,裡面包含了 gorm.Model、Title 以及 Content;最後,在 Post 資料表內建立了一筆資料。
以上是如何簡易地使用 GORM 連接資料庫及新增資料表並創建第一筆資料,更多的使用方法可以在官網上找到。